這篇整理一些常用的陣列方法
sort() 會對陣列所有的元素進行排列,並回傳此陣列
語法:
可以直接使用 sort
Array.sort()
或者參數使用compareFunction
Array.sort(compareFunction)
範例:
var a=[3,5,7,9,1,2]
console.log(a.sort()); // 回傳排序好的陣列,[1, 2, 3, 5, 7, 9]
console.log(a); // [1, 2, 3, 5, 7, 9]
如果直接使用 sort,沒有使用 compareFunction,預設會將元素轉成字串,並使用unicode來判斷,所以也會造成某些數字判斷錯誤
var b=[1,2,6,4,5,2,9,11,13,7];
console.log(b.sort()); // [1, 11, 13, 2, 3, 4, 5, 6, 7, 9]
使用 compareFunction 可以避免這個問題
sort() 的參數裡面可以放一個函式,函式有兩個參數。
語法:
function compareFunction(x,y){
return x-y // 這樣數字會由小排到大
}
範例:
var b=[1,2,6,4,5,2,9,11,13,7];
b.sort(function(x,y){
return x-y
});
console.log(b); // [1, 2, 3, 4, 5, 6, 7, 9, 11, 13]
b.sort(function(x,y){
return y-x
});
console.log(b); // [13, 11, 9, 7, 6, 5, 4, 3, 2, 1]
compareFunction 實際是依照回傳值來排序
compareFunction(x,y) 回傳值如果小於 0(負數),表示 x 會排在 y 前面
compareFunction(x,y) 回傳值如果大於 0(正數),表示 y 會排在 x 前面
所以 compareFunction 也可以寫成這樣
function compareFunction(x,y){
if(x<y) return -1;
if(x>y) return 1;
return 0;
}
也可以使用 console.log 觀察一下,是怎樣比較的
function compareFunction(x,y){
console.log(x,y);
if(x<y) return -1;
if(x>y) return 1;
return 0;
}
fill() 可以將陣列中的元素替換成指定的值,並且回傳改變後的陣列
語法
fill() 有三個參數
可以直接使用
Array.fill()
或使用參數
Array.fill(value,start,end)
範例:
var a=[1,2,3,4,5,6,7,8];
console.log(a.fill(null)); // [null,null,null,null,null,null,null,null]
var b=[1,2,3,4,5,6,7,8];
console.log(b.fill('b',2,6)); //[1,2,'b','b','b','b',7,8]